package com.atguigu.gulimallseckill.scheduled;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@EnableAsync
@Slf4j
@Component
@EnableScheduling
public class HelloScheduled {

    /**
     * 定时任务应该按cron表达式指定的时间执行，如果当前任务执行时间较长就只能等当前任务执行完才能执行下一个任务，因为Scheduled线程池默认线程数为1，
     * 定时任务不应该被阻塞，使用异步线程池的方式来解决，将任务交给线程池，每次执行任务就去开一个线程，就能保证定时任务不被阻塞
     * 使用方式，@Asyns 异步，默认线程数为8
     */
    @Async
    @Scheduled(cron = "* * * 19 * ?")
    public void test() throws InterruptedException {
        log.info("hello");
        Thread.sleep(3000);
    }
}
